package server.grupo.configuracion.general;

import persistencia.dominio.*;

import java.sql.Connection;
import java.util.*;

import persistencia.*;
import server.Control;
import server.aula.ControlAula;
import comun.constantes.*;
import comun.*;
/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author unascribed
 * @version 1.0
 */
public class ControlConfiguracionGralTodos extends ControlConfiguracionGral {
 
  public ControlConfiguracionGralTodos(Persistencia persistencia) {
    super(persistencia);
  }

  public ControlConfiguracionGralTodos(Connection conexion) {
      super(conexion);
  }

  public ControlConfiguracionGralTodos(Persistencia persistencia, Connection conexion) {
	    super(persistencia,conexion);
  }
  
 
public Boolean consultarHerramientasDeTodos(Long idAula, String estado){
	try {
		System.out.println("------------------------------------------Estado:"+estado);
		//Aula
		Aula aula = (Aula)persistencia.getObjectoPorId("persistencia.dominio.Aula",idAula);
		
		ConfiguracionGrupo configuracionGrupoAula = aula.getConfiguracionGrupoTodos();
		//Si el estado es borrador, obtengo el objeto de borrador, sino el de funcionando
		if(estado.compareTo(ESTADO_GRUPOS.BORRADOR)==0)configuracionGrupoAula = aula.getConfiguracionGrupoBorradorTodos();
		
		if(configuracionGrupoAula.getConfiguracionGralHerramientas().equals(TIPO_CONFIGURACION_DE_GRUPOS.PARTICULAR))
			return TIPO_CONFIGURACION_DE_GRUPOS.PARTICULAR;
		else return TIPO_CONFIGURACION_DE_GRUPOS.GENERAL;
		
	} catch (MyException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		return null;
	}	
}


/**
 * @param idAula
 * @return
 */
public Boolean consultaConfiguracionGralTodos_HayAlgoGral(Long idAula, String estado){
	
	try {
		System.out.println("------------------------------------------Estado:"+estado);
		System.out.println("------------------------------------------idAula:"+idAula);
		//Aula
		Aula aula = (Aula)persistencia.getObjectoPorId("persistencia.dominio.Aula",idAula);
		
		ConfiguracionGrupo configuracionGrupoAula = aula.getConfiguracionGrupoTodos();
		//Si el estado es borrador, obtengo el objeto de borrador, sino el de funcionando
		if(estado.compareTo(ESTADO_GRUPOS.BORRADOR)==0)configuracionGrupoAula = aula.getConfiguracionGrupoBorradorTodos();
		
		if(this.consultaConfiguracionGralAtributosGrupo(configuracionGrupoAula).equals(TIPO_CONFIGURACION_DE_GRUPOS.GENERAL) ||
				configuracionGrupoAula.getConfiguracionGralHerramientas().booleanValue()){
			return TIPO_CONFIGURACION_DE_GRUPOS.GENERAL;
		}else return TIPO_CONFIGURACION_DE_GRUPOS.PARTICULAR;
	} catch (MyException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		return null;
	}
	
}

	/**
	 * @param idAula
	 * @return
	 */
	public Boolean consultaConfiguracionGralTodos(Long idAula, String estado){
		try{
			System.out.println("------------------------------------------Estado:"+estado);
			  //Aula
			  Aula aula = (Aula)persistencia.getObjectoPorId("persistencia.dominio.Aula",idAula);
			  ConfiguracionGrupo configuracionGrupoAula = aula.getConfiguracionGrupoTodos();
//			Si el estado es borrador, obtengo el objeto de borrador, sino el de funcionando
			  if(estado.compareTo(ESTADO_GRUPOS.BORRADOR)==0)configuracionGrupoAula = aula.getConfiguracionGrupoBorradorTodos();
			  
			  if(this.consultaConfiguracionGralAtributosGrupo(configuracionGrupoAula).equals(TIPO_CONFIGURACION_DE_GRUPOS.GENERAL) &&
					  configuracionGrupoAula.getConfiguracionGralHerramientas().booleanValue())
				  return TIPO_CONFIGURACION_DE_GRUPOS.GENERAL;
			  else return TIPO_CONFIGURACION_DE_GRUPOS.PARTICULAR;
		}catch (MyException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
  }

	public void atributosGrupoConfiguracionTodos(Long idAula,Grupo grupo, String estado){
		try {
			System.out.println("------------------------------------------Estado:"+estado);
			//Aula
			Aula aula = (Aula)persistencia.getObjectoPorId("persistencia.dominio.Aula",idAula);
			
			ConfiguracionGrupo configuracionGrupoAula = aula.getConfiguracionGrupo();
//			Si el estado es borrador, obtengo el objeto de borrador, sino el de funcionando
			if(estado.compareTo(ESTADO_GRUPOS.BORRADOR)==0)configuracionGrupoAula = aula.getConfiguracionGrupoBorrador();
			
			//Comision o Comisiones
			//No solo configuro el aula, sino tmb las comisiones de ella
			
			this.controlandoAtributosGrupoPorConfiguracionDelHome(configuracionGrupoAula.getId(),grupo);
			ControlAula controlAula = new ControlAula(this.persistencia);
			try {
				Vector comisiones = controlAula.getComisionesDelAula(idAula);
				for (Iterator iter = comisiones.iterator(); iter.hasNext();) {
					Comision comision = (Comision) iter.next();
					ConfiguracionGrupo configuracionGrupoComision = comision.getConfiguracionGrupo();
//					Si el estado es borrador, obtengo el objeto de borrador, sino el de funcionando
					if(estado.compareTo(ESTADO_GRUPOS.BORRADOR)==0)configuracionGrupoComision = comision.getConfiguracionGrupoBorrador();
					
					this.controlandoAtributosGrupoPorConfiguracionDelHome(configuracionGrupoComision.getId(),grupo);
				}
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			super.pasarAParticularOGeneralConfiguracionGralTodosAtributos(idAula,estado,TIPO_CONFIGURACION_DE_GRUPOS.GENERAL);
			
			
		}catch (MyException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
      
  public void herramientasTodos(Long idAula, String estado){
	  try {
		  System.out.println("------------------------------------------Estado:"+estado);
		  //Aula
		  Aula aula = (Aula)persistencia.getObjectoPorId("persistencia.dominio.Aula",idAula);	  		
		  ConfiguracionGrupo configuracionGrupoAula = aula.getConfiguracionGrupo();	  
		  
		  //Si el estado es borrador, obtengo el objeto de borrador, sino el de funcionando
		  if(estado.compareTo(ESTADO_GRUPOS.BORRADOR)==0)configuracionGrupoAula = aula.getConfiguracionGrupoBorrador();
			
		  //Comisiones
		  //No solo configuro el aula, sino tmb las comisiones de ella
		  configuracionGrupoAula.setConfiguracionGralHerramientas(TIPO_CONFIGURACION_DE_GRUPOS.GENERAL);
		  ControlAula controlAula = new ControlAula(this.persistencia);
		  try {
			  Vector comisiones = controlAula.getComisionesDelAula(idAula);
			  for (Iterator iter = comisiones.iterator(); iter.hasNext();) {
				  Comision comision = (Comision) iter.next();
				  ConfiguracionGrupo configuracionGrupoComision = comision.getConfiguracionGrupo();	 
				  //Si el estado es borrador, obtengo el objeto de borrador, sino el de funcionando
				  if(estado.compareTo(ESTADO_GRUPOS.BORRADOR)==0)configuracionGrupoComision = comision.getConfiguracionGrupoBorrador();
				  
				  configuracionGrupoComision.setConfiguracionGralHerramientas(TIPO_CONFIGURACION_DE_GRUPOS.GENERAL);
			  }
		  } catch (Exception e) {
			  // TODO Auto-generated catch block
			  e.printStackTrace();
		  }
		  super.pasarAParticularOGeneralConfiguracionGralTodosHerramientas(idAula,estado,TIPO_CONFIGURACION_DE_GRUPOS.GENERAL);
		  
	  }catch (MyException e) {
		  // TODO Auto-generated catch block
		  e.printStackTrace();
	  }	  
  }  

}